/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package hoja.de.trabajo.pkg1;

/**
 *Hoja de trabajo No. 1
 * @author VICTOR FUENTES 12298
 * Seccion 10
 * 
 * 
 * 
 *  
 */
public class Radio {
    
    //atributos
   protected boolean Estado; //true=on, false=off
   protected int Estaciones;//estacion actual, 1-12
   protected Boton[] Botones;//lista de objeto boton, manejo de 12
   
   
   protected String actualFrec;//am-fm
   protected double actualEmi;//emisoras
   protected int count;//varible para el contador de la lista de botones automatica
  
    //metodos
   public  Radio(){
       Estado=false;
       Estaciones=0;
       Botones=new Boton[12];
       count=0;
       actualFrec="am";
       actualEmi=530;
       for(int a=0;a<12;a++){
           Botones[a]=new Boton();
           
       }
       //System.out.println("hla");
   }
   
   public void Encender(){
       Estado=true;
   } 
   
   public void Apagar(){
       Estado=false;
   }
    
   public void SeleccionarEstacion(int es){
       if(Estado==true){
           Estaciones=es;//ingreso de la estacion que se quiere, "1-12"
           actualFrec=Botones[es].getEstacion();
           actualEmi=Botones[es].getFrecuencia();
       }
   
   }
   
   public void LeerEstacion(String mm, double emi){//cambio realizado para meter String am-fm, y double de emisora
        if(Estado==true){
            if(mm.equals("am") && emi>=530 && emi<=1610 && emi%10==0){//condiciones para aceptar am
                actualFrec=mm;
                actualEmi=emi;
            }else if(mm.equals("fm")){//condiciones para aceptar fm
                double origEmi=emi;
                emi=emi*10;
                int emii=(int)emi;
                    if(emii%2==0){
                        //error, no fue en formato
                    }else{
                        if(emi<=1079 && emi>=879 ){
                            actualFrec=mm;
                            actualEmi=origEmi;
                        }else{
                            //si el rango es incorrecto, no realizar accion
                        }
                    }
            }
        }
       
   }
   //origEsta>=530 && origEsta <=1610 && origEsta%10==0
   public void AgregarEstacion(String Frec, double Esta){//se agregan parametros a botones de forma ordenada.
       double origEsta=Esta;//variable que guarda el double original
       
       
           
      
          if(Frec.equals("fm")){//validacion de emisoras en formato de fm
            Esta=Esta*10;
            int estaa=(int)Esta;//convertir double Esta a int estaa para manejo de residuo no igual a 0
            //System.out.println(Esta);
            //System.out.println(estaa);
                if(Estado==true){
                    //Botones[Estaciones]=new Boton();
                        if( estaa%2==0 ){
                        //System.out.println("error");    

                        }else{
                            if(Esta<=1079 && Esta>=879){//<>
                                if(count==12){
                                    count=0;
                                    Botones[count].set(Frec, origEsta);
                                    count++; 
                                }else if(count!=12);
                                {
                                   Botones[count].set(Frec, origEsta);
                                count++;  
                                }
                                 
                            }
                              //Si rango incorrecto, realizar ninguna accion  
                            
               
              
                        }
       
       
            //return count;
                }
       
            }else{//validacion de que emisoras en formato am
                if( Frec.equals("am") && origEsta>=530 && origEsta <=1610 && origEsta%10==0){//validacion correcta del rango y que division sea ingreo multiplo de 10
                    if(count==12){
                        count=0;
                        Botones[count].set(Frec,Esta);
                        count++;
                    }else if(count!=12){
                       Botones[count].set(Frec,Esta);
                        count++; 
                    }
                        
                    
                   }
            } 
        
       
       
      
   }
   
   
   
   public void ModificarEstacion(int i, String frec, double emi){//<>, se ingresa informacion a botones segun boton especificado
       if(i<=11 && i>=0){//verificacion de identificador de boton correcto
           if(Estado==true){//verificar que radio este encedido
               if(frec.equals("am") && emi>=530 && emi <=1610 && emi%10==0 ){//condiciones de am
                    Botones[i].set(frec, emi);
                       
                   
               }else if(frec.equals("fm")){
                   double origEmi=emi;
                   emi=emi*10;
                   int emii=(int)emi;
                   if(emii%2==0){//error, si debe de quedar residuo
                       
                   }else if(emi<=1079 && emi>=879){
                       Botones[i].set(frec, origEmi);//si no entra en condiciones, realizar ninguna accion. 
                   }
                   
               }
           }
           
       }
       
   }
   
   public String toString(){
       String report="";
       for(int i=0;i<12;i++){
        report+="\nBoton:"+i;
       report+=Botones[i].toString(); 
       //report+=count;
       }
       
       
       return report;
   }
   
   
   //metodos get para actualFrec y actualEmi
   public String getActualFrec(){
       return actualFrec;
   }
   public double getActualEmi(){
       return actualEmi;
   }
   
   public boolean getEstado(){
       return Estado;
   }
   public int getEstacion(){
       return Estaciones;
   }
   public int getCount(){
       return count;
   }
}







